package com.directorio.modelo.service;

import com.directorio.modelo.bean.Administrador;
import com.directorio.modelo.bean.Alumno;
import com.directorio.modelo.bean.Alumno_Capacitacion;
import com.directorio.modelo.bean.Alumno_Experiencia;
import com.directorio.modelo.bean.Alumno_Formacion;
import com.directorio.modelo.bean.Alumno_Habilidad;
import com.directorio.modelo.bean.Alumno_Requerimiento;
import com.directorio.modelo.bean.Dato_Tipo;
import com.directorio.modelo.bean.Sector_Habilidad;
import com.directorio.modelo.dao.AlumnoDao;
import com.directorio.modelo.service.AlumnoService;
import com.directorio.modelo.utiles.pojo.Funciones;

import java.util.List;
import java.util.Map;

public class AlumnoServiceImpl implements AlumnoService {

    protected AlumnoDao alumnoDao;
    public AlumnoServiceImpl(){
    }

    public List obtenerAlumnoAll(Map map)throws Exception {
        List list;
        try{
            list = alumnoDao.getAllAlumno(map);
        }catch(Exception ex){
            list = null;
            ex.printStackTrace();
        }
        return list;
    }
    public Alumno obtenerAlumno(String codigo) throws Exception{
        Alumno alumno = null;
        try{
            alumno = alumnoDao.getAlumno(codigo);
        }catch(Exception ex){
            alumno = null;
            ex.printStackTrace();
        }
        return alumno;
    }

    public void setAlumnoDao(AlumnoDao alumnoDao){
        this.alumnoDao = alumnoDao;
    }

    public Dato_Tipo validLogin(String cod, String pwd)throws Exception {
        Dato_Tipo dat = null;
        try{
            dat = alumnoDao.validaLogin(cod, pwd);
        }catch(Exception ex){
            dat = null;
            ex.printStackTrace();
        }
        return dat;
    }


	
	public int agregarAlumnoExperiencia(Alumno_Experiencia exper)throws Exception {
		exper.setOp("I");
		exper.setCod_itm(" ");
		return alumnoDao.insertAlumnoExperence(exper);
	}

	
	public int modificarAlumnoExperiencia(Alumno_Experiencia exper)throws Exception {
		exper.setOp("U");
		return alumnoDao.insertAlumnoExperence(exper);
	}
	
	public int eliminarAlumnoExperiencia(Alumno_Experiencia exper)throws Exception {
		exper.setOp("D");
		return alumnoDao.insertAlumnoExperence(exper);
	}

	
	public int agregarAlumnoCapacitacion(Alumno_Capacitacion capac)
			throws Exception {
		capac.setOp("I");
		capac.setCod_itm(" ");
		return alumnoDao.insertAlumnoCapacity(capac);
	}

	
	public int modificarAlumnoCapacitacion(Alumno_Capacitacion capac)
			throws Exception {
		capac.setOp("U");
		return alumnoDao.insertAlumnoCapacity(capac);
	}
	
	
	public int eliminarAlumnoCapacitacion(Alumno_Capacitacion capac)
			throws Exception {
		capac.setOp("D");
		return alumnoDao.insertAlumnoCapacity(capac);
	}

	
	public int agregarAlumnoHabilidad(Alumno_Habilidad habil) throws Exception {
		return alumnoDao.insertAlumnoHabilidad(habil);
	}

	
	public int agregarAlumnoFormacion(Alumno_Formacion formac) throws Exception {
		formac.setOp("I");
		return alumnoDao.insertAlumnoFormacion(formac);
	}

	
	public int modificarAlumnoFormacion(Alumno_Formacion formac)
			throws Exception {
		formac.setOp("U");
		return alumnoDao.insertAlumnoFormacion(formac);
	}

	
	public int elminarAlumnoFormacion(Alumno_Formacion formac) throws Exception {
		formac.setOp("D");
		return alumnoDao.insertAlumnoFormacion(formac);
	}
	
	public List<Alumno_Habilidad> obtenerHabilidades(String cod_unp) throws Exception {	
		
		return alumnoDao.getHabilidades(cod_unp);
	}

	
	public List<Alumno_Experiencia> obtenerExperiencias(String cod_unp)
			throws Exception {
		return alumnoDao.getExperiencias(cod_unp);
	}

	
	public List<Alumno_Capacitacion> obtenerCapacitaciones(String cod_unp)
			throws Exception {
		return alumnoDao.getCapacitaciones(cod_unp);
	}

	
	public int agregarAdministrador(Administrador admin) throws Exception {
		admin.setOp("I");
		return alumnoDao.insertAdministrador(admin);
	}

	
	public int modificarAdministrador(Administrador admin) throws Exception {
		admin.setOp("U");
		return alumnoDao.insertAdministrador(admin);
	}

	
	public int eliminarAdministrador(Administrador admin) throws Exception {
		admin.setOp("I");
		return alumnoDao.insertAdministrador(admin);
	}

	
	public Administrador obtenerAdministrador(String codigo) throws Exception {
		return alumnoDao.getAdministrador(codigo);
	}

	
	public Dato_Tipo cambiarContrasena(Map map) throws Exception {
		return alumnoDao.updatePassword(map);
	}

	
	public int modificarDatosAlumno(Map map) throws Exception {
		return alumnoDao.updateDatosAlumno(map);
	}

	
	public List<Alumno_Formacion> obtenerFormaciones(Map map) {
		return alumnoDao.getFormaciones(map);
	}

	
	public Dato_Tipo agregarAlumno(Alumno alum) {
		return alumnoDao.insertAlumno(alum);
	}

	
	public int asistirAlumnoARequerimiento(Alumno_Requerimiento requerAlum)
			throws Exception {
		requerAlum.setOp("00");
		return alumnoDao.insertAlumnoRequerimiento(requerAlum);
	}

	
	public List<String> obtenerCantidadesAdminInfor(Map map) throws Exception {
		String dat = alumnoDao.getCantidadesAdminInfor(map);
		String[] val = dat.split("#");
		return Funciones.getListStringFromArray(val);
	}

	
	public String aceptaSolicitudUser(Map map) throws Exception {
		String codigo = (String) map.get("codigos");
		String stado = (String) map.get("oper");
		map.remove("codigos");map.remove("oper");
		String data = "";
		int tam = 0;
		int cont = 0;
		int tam_cod = codigo.length(); 
		if(tam_cod%10==0){
			data +="A";
			tam = 10;
		}else if(tam_cod%11==0){
			data +="E";
			tam = 11;
		}else{
			return "0";
		}
		while(cont<codigo.length()/tam){
			String _cd = codigo.substring(cont*tam,(cont+1)*(tam));
			data+=stado+"-"+_cd;
			cont++;
		}
		map.put("_dat", data);
		return alumnoDao.getRequestUser(map);
	}

	public int insertHabilidadItem(Map map) throws Exception{
		map.put("_ti", "I");
		if(String.valueOf(map.get("_op")).compareTo("I")==0){
			map.put("_cd_it", "0");
		}
		return alumnoDao.insertHabilidadAdministrador(map);
	}

	public int insertHabilidad(Map map) throws Exception  {
		map.put("_ti", "H");
		map.put("_cd_it", "0");
		if(String.valueOf(map.get("_op")).compareTo("I")==0){
			map.put("_cd_hb", "0");			
		}
		return alumnoDao.insertHabilidadAdministrador(map);
	}

	public String eliminarRequestUser(Map map) throws Exception {
		String codigo = ((String) map.get("codigos")).trim();
		map.remove("codigos");map.remove("opr");
		String data = "";
		int tam = 0;
		int cont = 0;
		int tam_cod = codigo.length(); 
		if(tam_cod%18==0){
			data ="A"+codigo;
		}else if(tam_cod%19==0){
			data ="E"+codigo;
		}else{
			return "0";
		}
		map.put("_dat", data);
		System.out.println(data);
		return alumnoDao.delRequestUser(map);
	}
}